let oldArrayPrototype = Array.prototype;


export let arrayMethods = Object.create(oldArrayPrototype);

let methods = [
  'push',
  'pop',
  'shift',
  'unshift',
  'splice',
  'sort',
  'reverse'
]
methods.forEach(method => {
  arrayMethods[method] = function (...args) {
    // 1.数组新增的要看一下是不是对象，如果是对象，继续进行劫持
    // 2.其他需要调用原生逻辑
    let insterd = null;
    oldArrayPrototype[method].call(this, ...args)
    // 数组新增值等 方法有 push unshift splice(start,deletenum,x1,x2,x3)
    switch (method) {
      case 'push':
      case 'unshift':
        insterd = args;
        break;
      case 'splice':
        insterd = args.splice(2) // 如果splice，args从index=2开始才为新增的值
        break;

    }
    // insterd [],遍历数组 看一下每个值是否需要劫持,需要Observer类中observeArray方法
    if (insterd) {
      this.__ob__.observeArray(insterd);
    }
    this.__ob__.dep.notify();
  }
})
